class Solution {
public:
    int findNumberAppearingOnce(vector<int>& nums) {
        int n=nums.size();
        if(n<=0)
            return 0;
        vector<int> bitSum(32,0);
        
        for(int i=0;i<n;i++){
            int bitMask=1;
            for(int j=31;j>=0;j--){
                int bit=nums[i]&bitMask;
                if(bit!=0){
                    bitSum[j]+=1;
                }
                bitMask=bitMask<<1;
            }
        }
        
        int res=0;
        for(int i=0;i<32;i++){
            res<<=1;
            res=res+bitSum[i]%3;//这里利用了输入数据的特点, 只有一个数字出现了一次, 其他数字都出现了3次,所以bitSum[i]%3只能为0或1
            
        }
        return res;
    }
};